class Watcher {
    constructor(vm, key, cb) {
        this.vm = vm
        // data中的属性名
        this.key = key
        // 回调函数，更新视图
        this.cb = cb
        // 把Watcher 记录到Dep类的静态属性target中
        // 触发get方法，在get方法中会调用addSub
        Dep.target = this

        this.oldVal = vm[key]
        // 防止重复添加
        Dep.target = null
    }
    // 当数据变化跟新视图
    update() {
        let newVal = this.vm[this.key]
        if (newVal === this.oldVal) {
            return
        }
        this.cb(newVal)
    }
}